Synchronized look-up table loading

ABSTRACT

Examples relate to providing synchronized look-up table loading. In some examples, a print job is processed using an initial look-up table in processor memory. In response to the processing of the print job reaching a buffer trigger row of a portion of the print job, look-up metadata is accessed to locate a next look-up table. At this stage, the next look-up table is dynamically loaded into the processor memory as the processor continues to process the print job, where the processing of the print job begins using the next look-up table after a target row of the portion of the print job is reached.

BACKGROUND

Some printers include image processing application-specific integrated circuits (ASIC) or field-programmable arrays (FPGA) along with software for controlling the printers. Inkjet printheads may show an important variability in the size of the drops ejected. In order to avoid defects on paper, this difference is measured and compensated for by the printer by using a look-up table that lowers or increases the contone level depending on the drop size being too big or too small. A page-wide array printer may have several printheads in order to cover the full media width. In this case, the look-up table used to compensate the drop size has to be updated numerous times while processing a page.

BRIEF DESCRIPTION OF THE DRAWINGS

The following detailed description references the drawings, wherein:

FIG. 1 is a block diagram of an example printing device for providing synchronized look-up table loading;

FIG. 2 is a block diagram of an example printing device in communication with an example printing device for providing synchronized look-up table loading;

FIG. 3 is a flowchart of an example method for execution by a printing device for providing synchronized look-up table loading; and

FIG. 4 is a flowchart of an example method for execution by a printing device for loading look-up tables during a print job.

DETAILED DESCRIPTION

As detailed above, look-up tables are used by inkjet printers to compensate for variation in drop size. Look-up tables can also be used for other purposes such as cross color replacement (i.e., color conversion look-up tables to replace missing drops from defective or disabled printhead nozzles). Typically, firmware manually loads look-up tables when each look-up table is to be used for the print job. Images are broken into rows (i.e., bands) and processed in a print pipeline, and after each row, there is a possibility that the look-up table should be changed by the firmware. Firmware loading the look-up tables as needed is suitable for low performance printers, but as the printer performance increases, the processing power required to control the pipeline might become excessive. All the look-up tables may be locally stored in the ASIC or FPGA, which knows when each table should be used. This also provides a high performance with no firmware intervention, but because the local storage in the ASIC or FPGA is expensive, there is a limit in the number of look-up tables that can be used or the cost becomes excessive.

Examples disclosed herein address these issues by storing the look-up tables for processing a print job in external memory that it is large and inexpensive, so there is no limitation in the total number of look-up tables supported. In this case, the loader engine in the ASIC or FPGA can use the look-up tables stored in external memory to perform synchronized look-up table loading for print jobs. Specifically, the loader engine is preconfigured with row triggers that automatically initiate the pre-loading of look-up tables as a portion of the print job is printed. By having the loader engine pre-load the tables, the processor of the printing device can continuously process a print job without interrupting the process to load or wait for the next look-up table to be loaded.

Referring now to the drawings, FIG. 1 is a block diagram of an example printing device 100 for providing synchronized look-up table loading. Printing device 100 may be any device capable of printing that is accessible to a computing device. In the example of FIG. 1, printing device 100 includes memory controller 110, external memory 112, processor 114, processor memory 116, machine-readable storage medium 120.

Memory controller 110 may be any number of digital circuits and/or other hardware devices suitable for providing synchronized look-up table loading. Memory controller 110 may fetch, decode, and execute instructions to enable synchronized look-up table loading, as described below. As an alternative, or in addition, to retrieving and executing instructions, memory controller 114 may include any number of electronic circuits comprising a number of electronic components for performing the functionality of instructions 122 and/or 124. Memory controller 110 also has access to processor memory 116 so that memory controller 110 can load data from external memory 112 to processor memory 116. In contrast to processor 114, memory controller 110 is a dedicated component for managing the state of look-up tables in processor memory 116.

External memory 112 may be any electronic, magnetic, optical, or other physical storage device that stores data related to look-up tables. Thus, external memory 112 may be, for example, Random Access Memory (RAM), Read-Only Memory (ROM), Electrically-Erasable Programmable Read-Only Memory (EEPROM), flash memory, and the like. As described in detail below, external memory 112 may store look-up tables and related metadata. External memory 112 is typically less expensive and larger than processor memory 116 included in processor 114 described below.

Processor 114 may be any number of ASIC, FPGA, and/or other hardware devices suitable for processing print jobs of the printing device. Processor 114 may fetch, decode, and execute instructions to print portions (e.g., pages, regions of a large page, etc.) of a print job.

Processor memory 116 may be any electronic, magnetic, optical, or other physical storage device that stores data for use by processor 114. Thus, processor memory 116 may be, for example, Static Random Access Memory (SRAM) or some other memory suitable for use as a processor cache. Processor memory 116 is typically integrated in processor 114 to, for example, improve memory access speed.

Machine-readable storage medium 120 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, machine-readable storage medium 120 may be, for example, Random Access Memory (RAM), Read-Only Memory (ROM), Electrically-Erasable Programmable Read-Only Memory (EEPROM), flash memory, and the like. As described in detail below, machine-readable storage medium 120 may be encoded with executable instructions for providing synchronized look-up table loading.

Look-up data accessing instructions 122 obtain look-up data for synchronizing look-up table loading with a print job. Specifically, the look-up data may be look-up table metadata and synchronization data. In this example, look-up table metadata includes for each look-up table an address in external memory 112 where the look-up table is stored in external memory 112, a size of the look-up table in bytes, and an address in processor memory 116 where the look-up table should be loaded. Look-up data accessing instructions 122 may be triggered in response to an event such as processor 114 reaching a buffer trigger row in a print job.

Look-up table loading instructions 124 loads a look-up table into processor memory 116 according to the look-up data retrieved as described above. Typically, look-up table loading instructions loads the look-up into a buffer area of processor memory 116 that is to be used by processor 114 at a future time of the print job. In this manner, the processor 114 can continue to process the print job uninterrupted while memory controller 110 manages the look-up tables in processor memory 116.

FIG. 2 is a block diagram of an example printing device 200 in communication via a network 245 with an example computing device 240. As illustrated in FIG. 2 and described below, printing device 200 may communicate with computing device 240 to process a print job while performing synchronized look-up table loading.

As illustrated, printing device 200 may include memory control 210, external memory 212, and processor 214. Each of the modules of memory controller 210 may include a series of instructions encoded on a machine-readable storage medium and executable by memory controller 210. In addition or as an alternative, each module may include any number of hardware devices including electronic circuitry for implementing the functionality described below.

Printing device 200 may be an inkjet printer, a laser printer, a solid ink printer, or any other device suitable for executing the functionality described below. As detailed below, printing device 200 may include components for providing synchronized look-up table loading.

Memory controller 210 is configured to manage look-up tables stored in buffers of processor memory 216. Although the components of memory controller 210 are described in detail below, additional details regarding an example implementation of controller 210 are provided above with respect to instructions 122-124 of FIG. 1.

Memory interface 220 provides memory controller 210 with access to external memory 212 and processor memory 216. Specifically, the memory interface 220 may operatively connect memory controller 210 to memory 212, 216 and allow memory controller 210 to perform operations at memory addresses of memory 212, 216. For example, memory interface 220 can be used to access look-up table metadata 230 in external memory 212. In another example, memory interface 220 can be used to copy a look-up table 232 from external memory 212 to processor memory 216.

Look-up table identifier 222 obtains and analyzes look-up table data from external memory 212. Specifically, look-up table identifier 222 may access synchronization table 234 to determine the buffer trigger rows for a current portion of the print job that is being processed by printing device 200. In some cases, synchronization table 234 is loaded with the appropriate values for a portion of the print job (e.g., pages, regions of a large page, etc.) as the printing of the portion is initiated. A buffer trigger row identifies a row in the portion of the print job when a next look-up table to be used should be loaded into a next buffer in processor memory 216. After the buffer trigger rows are determined, the look-up table metadata 230 may be accessed to obtain data related to the next look-up table such as a memory address of the next look-up table 232 in external memory 212, a size of the next look-up table 232, and a destination address for the next look-up table 232 in processor memory 216.

Look-up table loader 224 dynamically loads look-up tables 232 into processor memory 216 based on the buffer trigger rows determined above. In response to printing device 200 reaching a buffer trigger row, look-up table loader 224 loads the corresponding look-up table 232 from external memory 212 to the next buffer (e.g., look-up table buffer A 236A, look-up table buffer N 236N). As the print job is processed, the progress is monitored and look-up tables 232 are loaded automatically by look-up table loader as specified in the synchronization table 234. Each entry in synchronization table 234 may include a reference to a look-up table, the buffer trigger row of the look-up table, and the target row of the look-up table. The target row of the look-up table is the row of the page where the look-up table should be used by processor 214 during the printing process.

Look-up table loader 224 may also initially load static look-up tables that are used by processor 214 throughout the printing of a portion of a print job. In this case, the buffer trigger row and the target row of the static look-up tables is designated as zero.

Processor 214 may be any number of ASIC, FPGA, and/or other hardware devices suitable for processing print jobs of the printing device. Processor memory 216 may be any electronic, magnetic, optical, or other physical storage device that stores data for use by processor 214 such as SRAM. Processor memory 216 includes a number of look-up table buffers 236A, 236N for storing look-up tables that are used to process the print jobs. While printing, processor 214 may designate a look-up table buffer (e.g., look-up table buffer A 236A) as the current buffer being used to print a portion of the print job and another look-up table (e.g., look-up table buffer N 236N) as the next buffer to be used once a target row of the portion is reached. In this manner, processor 214 may continuously cycle through its look-up table buffers 236A, 236N, which are automatically loaded by memory controller 210.

In some cases, printing device 200 may exhibit variability in the size of the drops ejected during printing. In order to avoid defects on paper, the difference in drop size is measured and compensated for using the look-up tables 232 to lowers or increase the contone level depending on the drop size. In other cases, printhead nozzles (not shown) of printing device 200 may become incapable of firing ink drops. To recover from disabled printhead nozzles, printing device 200 may use other nozzles that fire the same colorants as the disabled nozzles. In this case, printing device 200 may use a look-up table to convert the print job from the initial color space to a color space using the colorants available in the printer. As described above, the look-up tables 232 loaded in processor memory 216 are continuously updated during the processing of the print job.

Some of the look-up table buffers 236A, 236N can be used as static buffers for storing static look-up tables. A static look-up table is used by the processor throughout the printing of a portion of the print job. In this case, the remaining look-up table buffers are used to dynamically load look-up tables during the print job.

External memory 232 may be any electronic, magnetic, optical, or other physical storage device such as Random Access Memory (RAM), Read-Only Memory (ROM), Electrically-Erasable Programmable Read-Only Memory (EEPROM), flash memory, etc. External memory 232 includes look-up table metadata 230, look-up tables 232, and synchronization table 234.

FIG. 3 is a flowchart of an example method 300 for execution by printing device 100 for providing synchronized look-up table loading. Although execution of method 300 is described below with reference to printing device 100 of FIG. 1, other suitable devices for execution of method 300 may be used, such as printing device 200 of FIG. 2. Method 300 may be implemented in the form of executable instructions stored on a machine-readable storage medium, such as storage medium 120, and/or in the form of electronic circuitry.

Method 300 may start in block 305 and continue to block 310, where printing device 100 processes a print job using an initial look-up table in a current buffer of processor memory. The initial look-up table can be used to print a range of rows in a portion (e.g., pages, regions of a large page, etc.) of the print job. The print job is processed by a processor of printing device 100. In block 315, look-up table metadata is access to locate the next look-up table. Specifically, in response to a buffer trigger row of the portion being reached during the print job, look-up table metadata is accessed. The buffer trigger row is specified in a synchronization table.

In block 320, the next look-up table is dynamically loaded into the next buffer. The look-up table metadata is accessed and then used to load the next look-up table into the next buffer by a memory controller of printing device 100. In block 325, the processor of printing device 325 begins to process the portion of the print job at a target row using the next look-up table. Method 300 may then continue to block 330, where method 300 may stop.

FIG. 4 is a flowchart of an example method 400 for execution by printing device 200 for loading look-up tables during a print job. Although execution of method 400 is described below with reference to printing device 200 of FIG. 2, other suitable devices for execution of method 400 may be used. Method 400 may be implemented in the form of executable instructions stored on a machine-readable storage medium and/or in the form of electronic circuitry.

Method 400 may start in block 402 and proceed to block 404, where printing device 200 loads the initial look-up tables to initialize the next portion of a print job. Each portion of the print job may use a different set of look-up tables to account for printing variances such as drop size, cross color replacement, etc. Further, the look-up table buffers of printing device 200 may be loaded with the initial look-up tables for the next portion. In some cases, some number of static look-up tables are loaded that are used throughout the print job, where the look-up tables described below are dynamically loaded to account for printing variances. In block 406, the print job is performed using the look-up table in the current buffer.

In block 408, printing device 200 determines if the print job has reached a buffer trigger row of the current portion of the print job. If a buffer trigger row is reached, the next look-up table is dynamically loaded into the next buffer of printing device 200 in block 410. The next look-up table is loaded by a memory controller of printing device 200 in parallel so that a processor of printing device 200 can continue processing the print job.

In block 412, printing device 200 determines if the print job has reached a target row of the current portion of the print job. If the target row is reached, printing device 200 makes the next buffer the current buffer in block 414. At this stage, method 400 returns to block 406 so that the next look-up table that is now in the current buffer can be used to continue the processing of the print job. If the target row is not reached, printing device 200 determines if the print job has reached the next portion in block 416.

If the next portion of the print job is reached, method 400 returns to block 404 so that the initial look-up tables of the next portion can be initialized. If the next portion of the print job is not reached, printing device 200 determines if the print job is complete in block 418. If the print job is not complete, method 400 returns to 406. If the print job is complete, method 400 may then continue to block 420, where method 400 may stop.

The foregoing disclosure describes a number of examples for providing synchronized look-up table loading of a printing device. In this manner, the examples disclosed herein enable synchronized look-up table loading by using a memory controller to dynamically load look-up tables, which are used by a processor to process a print job. 

We claim:
 1. A printing device comprising: a processor to process a print job that is received from a computing device; processor memory operatively connected to the processor and comprising multiple buffers, each buffer to store a look-up table; additional memory configured to store a plurality of look-up tables for processing the print job; and a memory controller operatively connected to the additional memory, the memory controller to: in response to processing of the print job reaching a buffer trigger row of the print job, use look-up metadata stored in the additional memory to identify a next look-up table from among the plurality of look-up tables, wherein the processing of the print job is performed using an initial look-up table of the plurality of look-up tables; dynamically load the next look-up table into a next buffer of the processor memory while processor continues to process the print job using the initial look-up table in a current buffer of the processor memory; and continue processing the print job using the next look-up table after a target row of the print job is reached.
 2. The printing device of claim 1, wherein memory controller is to identify the next look-up table based on look-up metadata that comprises an address in the additional memory of the next look-up table and a look-up table size of the next look-up table.
 3. The printing device of claim 2, wherein the look-up metadata further comprises a processor memory address for each look-up table of the plurality of look-up tables, wherein the processor memory address is a destination in the processor memory for loading the corresponding look-up table.
 4. The printing device of claim 1, wherein the next look-up table comprises parameters to compensate for variable drop size of a plurality of printheads while processing the print job.
 5. The printing device of claim 1, wherein the next look-up table comprises a conversion for the print job to a color space that uses colorants available to the printing device.
 6. The printing device of claim 1, wherein the memory controller is further to load a static look-up table in a static buffer of the processor memory, wherein the processor uses the static look-up table throughout the processing of the portion of the print job.
 7. A method of synchronized loading of look-up tables in a printing device, the method comprising: using an initial look-up table of a plurality of look-up tables to process a print job, wherein the initial look-up table is loaded in a current buffer of processor memory; in response to reaching a buffer trigger row of a portion of the print job, accessing locating a next look-up table of the plurality of look-up tables; dynamically loading the next look-up table into a next buffer of the processor memory as processing of the print job continues; using the next look-up table to process the print job after a target row of the portion of the print job is reached; and with a memory controller having access to both the processor memory and an additional memory, accessing a synchronization table in the additional memory to determine buffer trigger rows of the print job.
 8. The method of claim 7, further comprising loading a static look-up table into a static buffer of the processor memory, wherein the processor uses the static look-up table throughout the processing of the portion of the print job.
 9. The method of claim 7, further comprising storing the initial look-up and the next look-up table in the additional memory, separate from the processor memory, before either look-up table is loaded into the processor memory by the memory controller.
 10. The method of claim 7, further comprising using the next look-up table to compensate for variable drop size of a plurality of printheads while processing the print job.
 11. The method of claim 7, further comprising using the next look-up table to convert the print job to a color space that uses available colorants.
 12. A method of synchronized loading of look-up tables in a printing device, the method comprising: loading an initial look-up table from a plurality of look-up tables in an additional memory into a current buffer of a processor memory of the printing device; with a processor of the printing device communicating with the processor memory, using the initial look-up table to process a print job; in response to reaching a buffer trigger row of a portion of the print job, dynamically loading a next look-up table of the plurality of look-up tables into a next buffer of the processor memory; in response to reaching a target row of a portion of the print job, making the next buffer the current buffer of the processor memory; continuing to process the print job using the next look-up table; and in response to reaching a second buffer trigger row of the print job, dynamically loading a corresponding look-up table of the plurality of look-up tables into the next buffer of the processor memory.
 13. The method of claim 12, further comprising, in response to reaching a second target row of a portion of the print job, making the next buffer of the processor memory the current buffer of the processor memory, and continuing to process the print job using the look-up table in the current buffer of the processor memory.
 14. The method of claim 12, further comprising using look-up metadata stored in the additional memory to identify the next look-up table from among the plurality of look-up tables.
 15. The method of claim 12, further comprising, with a memory controller having access to both the processor memory and the additional memory, accessing a synchronization table in the additional memory to determine buffer trigger rows of the print job.
 16. The method of claim 15, further comprising, with the memory controller, accessing look-up table metadata in the additional memory to identify the next look-up table.
 17. The method of claim 16, wherein the look-up table metadata specifies a memory address of the next look-up table in the additional memory, a size of the next look-up table and a destination address for the next look-up table in the processor memory.
 18. The method of claim 15, wherein each entry in the synchronization table comprises a reference to a look-up table of the plurality of look-up tables, a corresponding buffer row trigger and a corresponding target row.
 19. The method of claim 12, further comprising loading a static look-up table into a static buffer of the processor memory, wherein the processor uses the static look-up table throughout the processing of the portion of the print job. 